define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) {

    var Controller = {
        // index: function () {
        //     // 初始化表格参数配置
        //     Table.api.init({
        //         extend: {
        //             index_url: 'monitor/alarm/index',
        //             index1_url:'monitor/alarm/recipient',
        //             add_url: 'monitor/alarm/add',
        //             // add_url: 'add',
        //             edit_url: 'monitor/alarm/edit',
        //             del_url: 'monitor/alarm/del',
        //             multi_url: "monitor/alarm/multi",
        //             table: 'alarm',
        //         }
        //     });
        index: function () {
            // 初始化表格参数配置
            Table.api.init();
            // 表格1 告警配置
            var table1 = $("#table1");
            var alarm_way_arr = {"1":__('邮箱'),"2":__('企业微信'),"3":__('钉钉'),"9":__('全部')};
            var compare_way_arr = {"1":__('大于等于'),"2":__('小于')};
            var compare_data_arr = {"1":__('前5分钟'),"2":__('阈值')};
            var seriousness_arr = {"灾难":__('灾难'),"严重":__('严重'),"一般严重":__('一般严重'),"警告":__('警告'),"资讯":__('资讯')};
            var data_name_arr = {"流入":__('流入'),"流出":__('流出'),"CPU使用率":__('CPU使用率'),"内存使用率":__('内存使用率'),};
            var switch_arr = {"1":__('开'),"0":__('关')};
            var mail_group = Config.group;
            var department_data = Config.department_data;
            // 初始化表格
            table1.bootstrapTable({
                url: 'monitor/alarm/index',
                extend: {
                    index_url: 'monitor/alarm/index',
                    add_url: 'monitor/alarm/add',
                    edit_url: 'monitor/alarm/edit',
                    del_url: 'monitor/alarm/del',
                    multi_url: "monitor/alarm/multi",
                    table: '',
                },
                // toolbar: '#toolbar1',
                sortName: 'ops_alarm_config.id',
                // pk:'ops_alarm_config.id',
                search: false,
                showToggle: false,
                showColumns: false,
                // showExport:false,
                columns: [
                    [
                        {checkbox: true},
                        {field:"id",title: __('ID'),operate:false,formatter: function(value,row,index){
                            return row.id;
                        }},
                        {field:"ops_alarm_config.id",visible:false,title: __('ID'),formatter: function(value,row,index){
                            return row.id;
                        }},
                        {field: 'h.name',title:__('局点名称'),operate:'LIKE',placeholder: __('模糊查询'),formatter:function(value,row,index){
                            return row.region_name;
                        }},
                        {field: 'seriousness', operate:false,title: __('严重性'),searchList:seriousness_arr},
                        {field: 'ops_alarm_config.seriousness', visible:false,title: __('严重性'),searchList:seriousness_arr,operate:'LIKE'},
                        {field: 'data_name', operate:false,title: __('数据名称'),searchList:data_name_arr},
                        {field: 'ops_alarm_config.data_name', visible:false,title: __('数据名称'),searchList:data_name_arr},
                        {field: 'compare_way',operate:false, title: __('对比方式'),searchList:compare_way_arr,formatter:function(value,row,index){
                            if(value == 1){
                                return "大于等于";
                            }else{
                                return "小于";
                            }
                        }},
                        {field: 'ops_alarm_config.compare_way', visible:false,title: __('对比方式'),searchList:compare_way_arr,formatter:function(value,row,index){
                            if(value == 1){
                                return "大于等于";
                            }else{
                                return "小于";
                            }
                        }},
                        {field: 'name', operate:false,title: __('DeviceName'),placeholder: __('模糊查询')},
                        {field: 'ops_alarm_config.name',visible:false, title: __('DeviceName'),operate:'LIKE',placeholder: __('模糊查询')},
                        {field: 'remark', operate:false,title: __('DeviceNote'),placeholder: __('模糊查询')},
                        {field: 'ops_alarm_config.remark', visible:false,title: __('DeviceNote'),operate:'LIKE',placeholder: __('模糊查询')},
                        {field: 'compare_data', operate:false,title: __('对比数据'),searchList:compare_data_arr,formatter:function(value,row,index){
                            if(value == 1){
                                return "前5分钟";
                            }else{
                                return "阈值";
                            }
                        }},
                        {field: 'ops_alarm_config.compare_data', visible:false, title: __('对比数据'),searchList:compare_data_arr,formatter:function(value,row,index){
                            if(value == 1){
                                return "前5分钟";
                            }else{
                                return "阈值";
                            }
                        }},
                        {field: 'trigger_value', operate:false,title: __('触发值'),formatter:function(value,row,index){
                            if(row.compare_data == 1 || row.data_name == 'CPU使用率' || row.data_name == '内存使用率'){
                                return value+'%';
                            }else{
                                return value+'Mbps';
                            }
                        }},
                        {field: 'ops_alarm_config.trigger_value', visible:false, title: __('触发值'),formatter:function(value,row,index){
                            if(row.compare_data == 1 || row.data_name == 'CPU使用率' || row.data_name == '内存使用率'){
                                return value+'%';
                            }else{
                                return value+'Mbps';
                            }
                        }},
                        {field: 'flow_trigger_value', operate:false,title: __('告警值不低于'), formatter:function(value,row,index){
                            if(row.data_name == 'CPU使用率' || row.data_name == '内存使用率'){
                                return value+'%';
                            }else{
                                return value+'Mbps';
                            }
                        }},
                        {field: 'ops_alarm_config.flow_trigger_value',  visible:false,title: __('告警值不低于'), formatter:function(value,row,index){
                            if(row.data_name == 'CPU使用率' || row.data_name == '内存使用率'){
                                return value+'%';
                            }else{
                                return value+'Mbps';
                            }
                        }},
                        // {field: 'ops_alarm_config.template_id', title: __('Alarm Template'),visible:false,searchList:$.getJSON('monitor/Alarmtemplate/searchSource')},
                        // {field: 'template_id', title: __('Alarm Template'),operate:false},
                        {field: 'alarm_way', operate:false,title: __('告警方式'),searchList:alarm_way_arr,formatter:function(value,row,index){
                            if(value == 1){
                                return '邮箱';
                            }else if(value == 2){
                                return '企业微信';
                            }else if(value == 3) {
                                return '钉钉';
                            }else{
                                return '全部';
                            }
                        }},
                        {field: 'ops_alarm_config.alarm_way', visible:false,title: __('告警方式'),searchList:alarm_way_arr,formatter:function(value,row,index){
                            if(value == 1){
                                return '邮箱';
                            }else if(value == 2){
                                return '企业微信';
                            }else if(value == 3) {
                                return '钉钉';
                            }else{
                                return '全部';
                            }
                        }},
                        // {field: 'IfDescr', title: __('设备接口'),operate:false,formatter:function(value,row,index){
                        //     if(row.IfAlias == null && row.IfIndex == null){
                        //         return "-";
                        //     }else{
                        //         if(row.IfDescr != null){
                        //           var a = (row.IfDescr).split(',');
                        //         }else{
                        //           var a = new Array();
                        //         }
                        //         if(row.IfAlias != null){
                        //           var b = (row.IfAlias).split(',');
                        //         }else{
                        //           var b = new Array();
                        //         }
                        //         if(row.IfIndex != null){
                        //           var c = (row.IfIndex).split(',');
                        //         }else{
                        //           var c = new Array();
                        //         }
                        //         // var a = (row.IfDescr).split(',');
                        //         // var b = (row.IfAlias).split(',');
                        //         // var c = (row.IfIndex).split(',');
                        //         item = new Array();
                        //         if(a.length > 1){
                        //             a.forEach(function(v,k){
                        //                 if(c[k]){
                        //                     item[k] =  row.device_name+'__'+(b.k?b.k:v)+'__'+c[k];
                        //                 }else{
                        //                     item[k] =  row.device_name+'__'+(b.k?b.k:v);
                        //                 }
                        //                 // console.log(row.device_name+'__'+(b.k?b.k:v)+'__'+c[k]);
                        //             })
                        //             return item.join(',');
                        //         }else{
                        //             return row.device_name+"__"+(row.IfAlias?row.IfAlias:row.IfDescr)+"__"+row.IfIndex;
                        //         }
                        //     }
                        // }},
                        // {field: 'IfIndex', title: __('接口编号'),operate:false},
                        // {field: 'IfAlias', title: __('接口描述别名'),operate:false,formatter:function(value,row,index){
                        //     if(!value){
                        //         return '-';
                        //     }else{
                        //         return value;
                        //     }
                        // }},
                        // {field: 'f.id', title: __('企业微信部门'),searchList:department_data,operate:'LIKE',formatter:function(value,row,index){
                        //     return row.department_name;
                        // }},
                        // {field: 'g.name', title: __('企业微信成员'),operate:'LIKE',placeholder: __('模糊查询'),formatter:function(value,row,index){
                        //     return row.user_name;
                        // }},
                        // {field: 'e.id', title: __('邮件组'),searchList:mail_group,operate:'LIKE %...%',formatter:function(value,row,index){
                        //     return row.group_name;
                        // }},
                        // {field: 'd.number', title: __('邮件接收人'),operate:'LIKE',placeholder: __('模糊查询'),formatter:function(value,row,index){
                        //     return row.mail;
                        // }},
                        {
                            field: 'switch',
                            operate:false,
                            title: __('开关'),
                            align: 'center',
                            searchList:switch_arr,
                            formatter: Table.api.formatter.toggle
                        },
                        {
                            field: 'ops_alarm_config.switch',
                            visible:false,
                            title: __('开关'),
                            align: 'center',
                            searchList:switch_arr,
                            formatter: Table.api.formatter.toggle
                        },
                        {field: 'ops_alarm_config.createtime', title:__('创建时间'),operate:'RANGE',addclass:'datetimerange',
                            formatter: function(value,row,index){
                                return row.createtime;
                            }
                        },
                        {field: 'ops_alarm_config.datatime', title:__('更新时间'),operate:'RANGE',addclass:'datetimerange',
                            formatter: function(value,row,index){
                                return row.datatime;
                            }
                        },
                        {field: 'operate', title: __('Operate'), table: table1, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'detail',
                                    text: __('详情'),
                                    title: __('详情'),
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    icon: 'fa fa-list',
                                    url: 'monitor/alarm/detail',
                                    callback: function (data) {
                                        Layer.alert("接收到回传数据：" + JSON.stringify(data), {title: "回传数据"});
                                    },
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        return true;
                                    }
                                }
                            ]
                        }
                    ]
                ],
                    // commonSearch: false,
            });

            // 为表格1绑定事件
            Table.api.bindevent(table1);


        },


        add: function () {
            $("#c-mail_group_ids").attr("readOnly","true");
            $("#c-mail_ids").attr("readOnly","true");
            $("#c-wechat_department_ids").attr("readOnly","true");
            $("#c-wechat_user_ids").attr("readOnly","true");
            $('input[type=number]').keypress(function(e) {
            　　if (!String.fromCharCode(e.keyCode).match(/[0-9\.]/)) {
            　　　　return false;
            　　}
            });


            //  选择不同的数据名称 展示不同的报警触发值
            $("select[name='row[data_name]']").change(function(){
               var data_name = $("select[name='row[data_name]']").find('option:selected').val();
               if(data_name == 'CPU使用率' || data_name == '内存使用率'){
                    $("#flow").html("(%)");
                    $(".ratio").html("(%)");
                    $("#cpu1").show();
                    $("#flow1").hide();
                    $("#flow1").find('input').attr("disabled",true);
                    $("#cpu1").find('input').attr("disabled",false);
                    $("#dev1").find('input').attr("disabled",false);
                    // $(".flow1").attr("disabled",true);
               }else{
                    var compare_data = $("select[name='row[compare_data]']").find('option:selected').val();
                    if(compare_data == '1'){
                       $(".ratio").html("(%)");
                    }else{
                        $(".ratio").html("(Mbps)");
                    }
                    $("#flow").html("(Mbps)");
                    $("#cpu1").hide();
                    $("#flow1").show();
                    $("#cpu1").find('input').attr("disabled",true);
                    $("#flow1").find('input').attr("disabled",false);
                    $("#dev1").find('input').attr("disabled",true);
               }
            })

            //  选择不同的报警方式展示不同的列表
            var alarm_way_data = $("select[name='row[alarm_way]']").find('option:selected').val();
            $("select[name='row[alarm_way]']").change(function(){
               var data_name = $("select[name='row[alarm_way]']").find('option:selected').val();
               if(data_name == '9'){
                    $("#mail").show();
                    $("#weach").show();
                    $("#ding").show();
               }else if(data_name == '1'){
                    $("#mail").show();
                    $("#weach").hide();
                    $("#ding").hide();
               }else if(data_name == '2'){
                    $("#mail").hide();
                    $("#weach").show();
                    $("#ding").hide();
               }else if(data_name == '3'){
                   $("#mail").hide();
                   $("#weach").hide();
                   $("#ding").show();
               }
            })
            //  选择不同的对比数据 展示不同的单位            
            $("#compare_data").change(function(){
                var compare_data = $("select[name='row[compare_data]']").find('option:selected').val();
                var data_name = $("select[name='row[data_name]']").find('option:selected').val();
                if(compare_data == '1' || data_name == 'CPU使用率' || data_name == '内存使用率'){
                    // $(".ratio").show();
                    // $(".mb").hide();
                    $(".ratio").html("(%)");
                }else{
                    $(".ratio").html("(Mbps)");
                    // $(".ratio").hide();
                    // $(".mb").show();
                }
            })

            $("#c-devices").data("params",function(obj){
                return {row:{region_id:$("#c-region_id").val()}};
            });
            $("#c-device_if_ids").data("params",function(obj){
                return {row:{device_ids:$("#c-devices").val(),region_id:$("#c-region_id").val()}};
            });
            Controller.api.bindevent();
        },
        edit: function () {
            $("#c-mail_group_ids").attr("readOnly","true");
            $("#c-mail_ids").attr("readOnly","true");
            $("#c-wechat_department_ids").attr("readOnly","true");
            $("#c-wechat_user_ids").attr("readOnly","true");
            $('input[type=number]').keypress(function(e) {
            　　if (!String.fromCharCode(e.keyCode).match(/[0-9\.]/)) {
            　　　　return false;
            　　}
            });
            var compare_data = $("select[name='row[compare_data]']").find('option:selected').val();
            var data_name = $("select[name='row[data_name]']").find('option:selected').val();
            // console.log(compare_data);
            // console.log(data_name);
            if(compare_data == '1' || data_name == 'CPU使用率' || data_name == '内存使用率'){
                $(".ratio").html("(%)");
            }else{
                $(".ratio").html("(Mbps)");
            }

            //  选择不同的对比数据 展示不同的单位
            $("#compare_data").change(function(){
                var compare_data = $("select[name='row[compare_data]']").find('option:selected').val();
                var data_name = $("select[name='row[data_name]']").find('option:selected').val();
                if(compare_data == '1' || data_name == 'CPU使用率' || data_name == '内存使用率'){
                    $(".ratio").html("(%)");
                }else{
                    $(".ratio").html("(Mbps)");
                }
            })
            if(data_name == 'CPU使用率' || data_name == '内存使用率'){
                $("#flow").html("(%)");
                $("#cpu1").show();
                $("#flow1").hide();
                $("#flow1").find('input').attr("disabled",true);
                $("#cpu1").find('input').attr("disabled",false);
                // $("#dev1").find('input').attr("disabled",false);
                // $(".ratio").html("(%)");
            }else{
                $("#flow").html("(Mbps)");
                $("#cpu1").hide();
                $("#flow1").show();
                $("#cpu1").find('input').attr("disabled",true);
                $("#flow1").find('input').attr("disabled",false);
                // $("#dev1").find('input').attr("disabled",true);
                // $(".ratio").html("(Mbps)");
            }

            //  选择不同的数据名称 展示不同的报警触发值
            $("select[name='row[data_name]']").change(function(){
               var data_name = $("select[name='row[data_name]']").find('option:selected').val();
               if(data_name == 'CPU使用率' || data_name == '内存使用率'){
                    $("#flow").html("(%)");
                    $(".ratio").html("(%)");
                    $("#cpu1").show();
                    $("#flow1").hide();
                    $("#flow1").find('input').attr("disabled",true);
                    $("#cpu1").find('input').attr("disabled",false);
                    $("#dev1").find('input').attr("disabled",false);
                    $("#c-device_if_ids").empty();
                    $("#c-device_ids").empty();
               }else{
                    var compare_data = $("select[name='row[compare_data]']").find('option:selected').val();
                    if(compare_data == '1'){
                       $(".ratio").html("(%)");
                    }else{
                        $(".ratio").html("(Mbps)");
                    }
                    $("#flow").html("(Mbps)");
                    $("#cpu1").hide();
                    $("#flow1").show();
                    $("#cpu1").find('input').attr("disabled",true);
                    $("#flow1").find('input').attr("disabled",false);
                    $("#dev1").find('input').attr("disabled",true);
                    $("#c-device_if_ids").empty();
                    $("#c-device_ids").empty();
               }
            })
            var alarm_way_data = $("select[name='row[alarm_way]']").find('option:selected').val();
            if(alarm_way_data == 9){
                $("#mail").show();
                $("#weach").show();
                $("#ding").show();
            }else if(alarm_way_data == 1){
                $("#mail").show();
                $("#weach").hide();
                $("#ding").hide();
            }else if(alarm_way_data == 2){
                $("#mail").hide();
                $("#weach").show();
                $("#ding").hide();
            }else if(alarm_way_data == 3){
                $("#mail").hide();
                $("#weach").hide();
                $("#ding").show();
            }

            //  选择不同的报警方式展示不同的列表
            $("select[name='row[alarm_way]']").change(function(){
               var data_name = $("select[name='row[alarm_way]']").find('option:selected').val();
               if(data_name == '9'){
                    $("#mail").show();
                    $("#weach").show();
                    $("#ding").show();
               }else if(data_name == '1'){
                    $("#mail").show();
                    $("#weach").hide();
                    $("#ding").hide();
               }else if(data_name == '2'){
                    $("#mail").hide();
                    $("#weach").show();
                    $("#ding").hide();
               }else if(data_name == '3'){
                    $("#mail").hide();
                    $("#weach").hide();
                    $("#ding").show();
               }
            })

            $("#c-devices").data("params",function(obj){
                return {row:{region_id:$("#c-region_id").val()}};
            });
            $("#c-device_if_ids").data("params",function(obj){
                return {row:{device_ids:$("#c-devices").val(),region_id:$("#c-region_id").val()}};
            });
            Controller.api.bindevent();
        },
        recipient_add:function(){
            Controller.api.bindevent();
        },
        recipient_add_wechat:function(){
            Controller.api.bindevent();
        },
        recipient_edit:function(){
            Controller.api.bindevent();
        },
        device_add:function(){
            $("#c-device_ip").data("params",function(obj){
                return {row:{device_id:$("#ip").val()}};
            });
            Controller.api.bindevent();
        },
        device_edit:function(){
            $("#c-device_ip").data("params",function(obj){
                return {row:{device_id:$("#ip").val()}};
            });
            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        },
    };
    return Controller;
});